BIST Dependency Parser¶
Graph-based dependency parser using BiLSTM feature extractors¶
The techniques behind the parser are described in the Simple and Accurate Dependency Parsing Using Bidirectional LSTM Feature Representations 1.
To use the module, import it like so:
from nlp_architect.models.bist_parser import BISTModel
Training the parser requires having a
formatted according to the CoNLL-U data format,
annotated with part-of-speech tags and dependencies.
The benchmark was performed on a Mac book pro with i7 processor. The parser achieves
an accuracy of 93.8 UAS on the standard Penn Treebank dataset (Universal Dependencies).
To train a parsing model with default parameters, type the following:
parser = BISTModel() parser.fit('/path/to/train.conllu')
Optionally, the following model/training parameters can be supplied (overriding their default values listed below):
parser = BISTModel(activation='tanh', lstm_layers=2, lstm_dims=125, pos_dims=25) parser.fit('/path/to/train.conllu', epochs=10)
Conducting Intermediate Evaluations¶
If a path to a development dataset file (annotated with POS tags and dependencies) is supplied, intermediate model evaluations are conducted:
parser = BISTModel() parser.fit('/path/to/train.conllu', dev='/path/to/dev.conllu')
For each completed epoch, denoted by n, the following files will be created in the dataset’s directory:
dev_epoch_n_pred.conllu - prediction results on dev file after n iterations.
dev_epoch_n_pred_eval.txt - accuracy results of the above predictions.
Once you have a trained
BISTModel, there are two acceptable input modes for running inference
with it. For both modes, the input must be annotated with part-of-speech tags.
File Input Mode¶
Supply a path to a dataset file in the CoNLL-U data format.
predictions = parser.predict(dataset='/path/to/test.conllu')
ConllEntry Input Mode¶
Supply a list of sentences, where each sentence is a list of annotated tokens, represented by
predictions = parser.predict(conll='/path/to/test.conllu')
The output format is the same as in file input mode.
Running an evaluation requires the following: - Inference must be run in file input mode - The input file must be annotated with dependencies as well
To evaluate predictions immediately after they’re generated, type the following:
predictions = parser.predict(dataset='/path/to/test.conllu', evaluate=True)
This will produce 2 files in your input dataset’s directory:
test_pred.conllu - predictions file in CoNLL-U format
test_pred_eval.txt - evaluation report text file
Saving and Loading a Model¶
To save a
BISTModel to some path, type:
This operation will also produce a model parameters file named params.json, in the same directory. This file is required for loading the model afterwards.
To load a
BISTModel from some path, type:
Note that this operation will also look for the params.json in the same directory.
Kiperwasser, E., & Goldberg, Y. (2016). Simple and Accurate Dependency Parsing Using Bidirectional LSTM Feature Representations. Transactions Of The Association For Computational Linguistics, 4, 313-327. https://transacl.org/ojs/index.php/tacl/article/view/885/198